package com.practice.system.controller;

import com.practice.system.service.ProductService;
import com.practice.utils.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

@RestController
@RequestMapping("/Product")
public class ProductController {
    @Autowired
    private ProductService productService;

    /**
     * 查询条件以及列表显示
     *
     * @param params
     * @return
     */
    @PostMapping("/list")
    public R list(@RequestBody Map<String, Object> params) {
        return productService.queryPage(params);
    }

    /**
     * 新增+这里获取到到的是产品+物料的数据
     * 这里的逻辑为 一个产品1对应多个物料n
     * 所以传输的json应该为:
     * {
     * Prodectjson...
     * ...
     * ...
     * 添加物料
     * "materiels":[{materiel...},{materiel...},{materiel...}...]
     * 绑定物料
     * "materielListNeedInsert"=[...,...,...,...,...]
     * }
     *
     * @param params
     * @return
     */
    @PostMapping("/add")
    public R insert(@RequestBody Map<String, Object> params) {
        if (!ObjectUtils.isEmpty(params.get("product")) && !ObjectUtils.isEmpty("modelName")) {
            R.error("产品或模型名称为必填项!");
        }
        if (!ObjectUtils.isEmpty(params.get("materiels")))
            R.error("物料信息至少有一个!");
        return productService.insertValue(params) ? R.ok("新建成功") : R.error("新建失败");
    }

    /**
     * 修改
     *
     * @param params
     * @return
     */
    @PostMapping("/update")
    public R update(@RequestBody Map<String, Object> params) {
        return productService.updateValue(params) ? R.ok("修改成功") : R.error("修改失败");
    }

    /**
     * 删除
     *
     * @param id
     * @return
     */
    @GetMapping("/delete/{id}")
    public R delete(@PathVariable("id") String id) {
        return productService.deleteValue(id) ? R.ok("删除成功") : R.error("删除失败");
    }
}
